<?php 
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/parameters/ParameterGetter.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/exceptions/FormulaireException.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/writerJSON/WriterJSON.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/string/StringUtils.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/service/uc/gereruc/GererUcService.php';

	class GererUcAction {
		public static function ajouter() {
			$gererUcUcVO = GererUcService::ajouterUc();
			ParameterGetter::setSessionParameter("gererUcUcVO", $gererUcUcVO);
			WriterJSON::echoSuccessState();
		}
		
		public static function modifier() {
			$id = ParameterGetter::getRequestParameter("id", true);
			$gererUcUcVO = GererUcService::modifierUc($id);
			ParameterGetter::setSessionParameter("gererUcUcVO", $gererUcUcVO);	
			
			$listeIdRoleAsString = StringUtils::getIdArrayAsString($gererUcUcVO->listeRoleVO);
			WriterJSON::echoDonnees(array("code" => $gererUcUcVO->code, "libelle" => $gererUcUcVO->libelle, "listeRole" => $listeIdRoleAsString));
		}
		
		public static function getIdModifie() {
			$gererUcUcVO = ParameterGetter::getSessionParameter("gererUcUcVO", true);
			$id = $gererUcUcVO->id;
			WriterJSON::echoDonnees (array("id" => "$id"));
		}
		
		public static function valider() {
			$gererUcUcVO = ParameterGetter::getSessionParameter("gererUcUcVO", true);
			$gererUcUcVO->code = ParameterGetter::getRequestParameter("code", true);
			$gererUcUcVO->libelle = ParameterGetter::getRequestParameter("libelle", true);
			$listeIdRoleVOString = ParameterGetter::getRequestParameter("listeRole", true);
			
			$listeIdRoleVO = StringUtils::explodeString("|", $listeIdRoleVOString);
			$gererUcUcVO->listeRoleVO = GererUcService::convertListeIdToListeRoleVO($listeIdRoleVO);
		
			
			GererUcAction::verifierUcAvantValidation($gererUcUcVO);
			GererUcService::validerUc($gererUcUcVO);
			ParameterGetter::removeSessionParameter("gererUcUcVO");
			WriterJSON::echoSuccess ("L'activité a bien été ajoutée/modifiée");
		}
		
		public static function annuler() {
			ParameterGetter::removeSessionParameter("gererUcUcVO");
			WriterJSON::echoSuccessState();
		}
		
		public static function supprimer() {
			$id = ParameterGetter::getRequestParameter("id", true);
			GererUcService::supprimerUc($id);
			WriterJSON::echoSuccess ("L'activité a bien été supprimée");
		}
		
		public static function getListeRoleLie() {
			$ucVO = ParameterGetter::getSessionParameter("gererUcUcVO", true);
			$roleTrouve= false;
			foreach ($ucVO->listeRoleVO as $i => $roleVO) {
				$listeDonnees[$roleVO->id] = $roleVO->libelle;
				$roleTrouve = true;
			}
			if ($roleTrouve) {
				WriterJSON::echoDonnees($listeDonnees);
			} else {
				WriterJSON::echoSuccessState();
			}
		}
		
		public static function ajouterRoleSurUc() {
			$idRole = ParameterGetter::getRequestParameter("idObjet", true);
			$roleVO = GererUcService::getGererUcRoleVOByID($idRole);
		
			$ucVO = ParameterGetter::getSessionParameter("gererUcUcVO", true);
			$ucVO->listeRoleVO[]=$roleVO;
			ParameterGetter::setSessionParameter("gererUcUcVO", $ucVO);
			WriterJSON::echoSuccessState();
		}
		
		public static function supprimerRoleSurUc() {
			$idRole = ParameterGetter::getRequestParameter("idObjet", true);
		
			$ucVO = ParameterGetter::getSessionParameter("gererUcUcVO", true);
			foreach ($ucVO->listeRoleVO as $i => $roleVO) {
				if ($idRole == $roleVO->id) {
					unset ($ucVO->listeRoleVO[$i]);
				}
			}
			ParameterGetter::setSessionParameter("gererUcUcVO", $ucVO);
			WriterJSON::echoSuccessState();
		}
		
		
		private static function verifierUcAvantValidation($gererUcUcVO) {
			$exception = new FormulaireException();
			if (StringUtils::isEmpty($gererUcUcVO->code)) {
				$exception->ajouterChampNonRenseigne("Code");
			}
			if (StringUtils::isEmpty($gererUcUcVO->libelle)) {
				$exception->ajouterChampNonRenseigne("Libellé");
			}
			
			if ($exception->contientErreurs()) {
				throw $exception;
			}
		}
	}
?>